home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / share / nikto / plugins / nikto_realms.plugin < prev    next >
Text File  |  2005-10-19  |  2KB  |  79 lines

  1. #VERSION,1.02
  2. #LASTMOD,09.07.2004
  3. # (c) 2001-2005 cirt.net, All Rights Reserved
  4.  
  5. # this plugin checks auth realms for default ids/passwords
  6.  
  7. # This software is distributed under the terms of the GPL, which should have been received
  8. # with a copy of this software in the "LICENSE.txt" file.
  9.  
  10. sub nikto_realms
  11. {
  12.  (my $RES, my $CONTENT) = fetch("/","GET","");
  13.  if ($result{'www-authenticate'} eq "") { return; }
  14.  
  15.  my %REALMS=load_realms("$NIKTO{plugindir}/realms.db");
  16.  
  17.  # check for ident only messages first
  18.  foreach my $REALM (keys %REALMS)
  19.   {
  20.    if (($REALMS{$REALM}{id} eq "") && ($REALMS{$REALM}{pw} eq "") && ($result{'www-authenticate'} =~ /$REALM/i))
  21.     { print "+ $REALM: $REALMS{$REALM}{msg}\n"; }
  22.   } 
  23.  
  24.  # check for 'broken' web server, returns a blank www-auth header no matter what the id/pw sent
  25.  my $tid=LW::utils_randstr();
  26.  LW::auth_set_header("basic",\%request,$tid,$tid);
  27.  LW::http_fixup_request(\%request);
  28.  LW::http_do_request(\%request,\%result); # test auth
  29.  if ($result{'www-authenticate'} eq "")  { return; }
  30.  
  31.  foreach my $RID (keys %REALMS)
  32.   {
  33.    if (($result{'www-authenticate'} =~ /$REALMS{$RID}{name}/i) || ($REALMS{$RID}{name} eq "\@ANY"))
  34.     { 
  35.      my $realm_temp=$result{'www-authenticate'}; # grab name
  36.      LW::auth_set_header("basic",\%request,$REALMS{$RID}{id},$REALMS{$RID}{pw});   # set auth
  37.      LW::http_fixup_request(\%request);
  38.      LW::http_do_request(\%request,\%result); # test auth
  39.      if ($result{'www-authenticate'} eq "")
  40.       { nprint("+ Default account found for '$REALMS{$RID}{name}'(ID '$REALMS{$RID}{id}', PW '$REALMS{$RID}{pw}). $REALMS{$RID}{msg}'"); 
  41.         #set auth stuff & run auth_check again
  42.         $NIKTO{hostid}=$REALMS{$RID}{id};
  43.         $NIKTO{hostpw}=$REALMS{$RID}{pw};
  44.         $result{'www-authenticate'}=$realm_temp; # set it back so auth_check properly ids it
  45.         &auth_check;
  46.       }
  47.     } 
  48.   }
  49.  return;
  50. }
  51.  
  52. sub load_realms
  53. {
  54.  my %AUTHREALMS;
  55.  my $AFILE=$_[0]; 
  56.  open(IN,"<$AFILE") || die nprint("ERROR: Can't open $AFILE:$!");
  57.  my @file=<IN>;
  58.  close(IN);
  59.  my $rid=0;
  60.  foreach my $line (@file)
  61.  {
  62.   chomp($line);
  63.   $line=~s/\#.*$//;
  64.   $line=~s/\s+$//;
  65.   if ($line eq "") { next; }
  66.   my @t=parse_csv($line);
  67.   $AUTHREALMS{$rid}{name} = $t[0];
  68.   $AUTHREALMS{$rid}{id}   = $t[1];
  69.   $AUTHREALMS{$rid}{pw}   = $t[2];
  70.   $AUTHREALMS{$rid}{msg}  = $t[3];
  71.   nprint("Loaded:$t[0] -- $t[1], $t[2], $t[3]","d");
  72.   $rid++;
  73.  }
  74. return %AUTHREALMS;
  75.  
  76. }
  77.  
  78. 1;
  79.